package com.extends02;
//父类
//细节1：子类继承了所有的属性和方法，非私有的属性和方法可以在子类访问，
// 但是私有（private）属性不能在子类直接（可间接）访问，要通过公共方法去访问。
//细节2：子类必须调用父类的构造器，完成父类的初始化。其中是super的原因
//细节3：当创建子类对象时，不管使用子类的哪个构造器，默认情况下总会去调用父类的无参构造器，
// 如果父类没有提供无参构造器，
// 则必须在子类的构造器中用super去指定使用父类的哪个构造器完成对父类的初始化工作，否则，编译不会通过。
//细节4：4.	如果希望指定去调用父类的某个构造器，则显式的调用一下：super（参数列表）
public class Base  extends TopBase {
    public int n1= 1;
    protected int n2= 2;
    int n3= 3;
    private int n4= 4;
    public int dwa(){
        return n4;
    }
    public Base(){
        //父类的构造器
        System.out.println("Base父类 constructor");
    }
    public Base(String gender,int age){
        System.out.println("===Base constructor===");
    }
    public void test100(){
        System.out.println(100);
    }
    protected void test200(){
        System.out.println(200);
    }
    void test300(){
        System.out.println(300);
    }
    private void test400(){
        System.out.println(400);
    }
    public void speak() {
        test400();
    }
}
